BigDFT.Logfiles module
This module is useful to process a logfile of BigDFT run, in yaml format. It also provides some tools to extract typical informations about the run, like the energy, the eigenvalues and so on.
- get_logs(files)[source]
Return a list of loaded logfiles from files, which is a list of paths leading to logfiles.
Args:
- Parameters
files – List of filenames indicating the logfiles
- Returns
List of Logfile instances associated to filename
- document_quantities(doc, to_extract)[source]
Extract information from the runs.
Warning
This routine was designed for the previous parse_log.py script and it is here only for backward compatibility purposes.
- perform_operations(variables, ops, debug=False)[source]
Perform operations given by ‘ops’. ‘variables’ is a dictionary of variables i.e. key=value.
Warning
This routine was designed for the previous parse_log.py script and it is here only for backward compatibility purposes.
- process_logfiles(files, instructions, debug=False)[source]
Process the logfiles in files with the dictionary ‘instructions’.
Warning
This routine was designed for the previous parse_log.py script and it is here only for backward compatibility purposes.
- find_iterations(log)[source]
Identify the different block of the iterations of the wavefunctions optimization.
Todo
Should be generalized and checked for mixing calculation and O(N) logfiles
- Parameters
log (dictionary) – logfile load
- Returns
wavefunction residue per iterations, per each subspace diagonalization
- Return type
numpy array of rank two
- build_tuple(inp)[source]
recursively build a tuple from a dict, for hashing
- Parameters
inp (dict) – input dictionary to be “tuple-ised”
- Returns
tuple
- plot_wfn_convergence(wfn_it, gnrm_cv, label=None, ax=None)[source]
Plot the convergence of the wavefunction coming from the find_iterations function. Cumulates the plot in matplotlib.pyplot module
- Parameters
wfn_it – list coming from
find_iterations()
gnrm_cv – convergence criterion for the residue of the wfn_it list
label – label for the given plot
- class Logfile(*args, **kwargs)[source]
Import a Logfile from a filename in yaml format, a list of filenames, an archive (compressed tar file), a dictionary or a list of dictionaries.
- Parameters
*args – sequence of logfiles to be parsed. If it is longer than one item, the logfiles are considered as belonging to the same run.
**kwargs –
describes how the data can be read. Keywords can be:
archive: name of the archive from which retrieve the logfiles.
- member: name of the logfile within the archive. If absent, all the
files of the archive will be considered as args.
label: the label of the logfile instance
- dictionary: parsed logfile given as a dictionary,
serialization of the yaml logfile
Example
>>> l = Logfile('one.yaml','two.yaml') >>> l = Logfile(archive='calc.tgz') >>> l = Logfile(archive='calc.tgz',member='one.yaml') >>> l = Logfile(dictionary=dict1) >>> l = Logfile(dictionary=[dict1, dict2])
Todo
Document the automatically generated attributes, perhaps via an inner function in futile python module
- get_dos(**kwargs)[source]
Get the density of states from the logfile.
Fill a py:class:~BigDFT.DoS.DoS class object with the information which is stored in this logfile.
- Parameters
**kwargs – Keyword Arguments of the py:class:~BigDFT.DoS.DoS class.
- Returns
- class instance. Filled with bandarrays and
fermi_level.
- Return type
- get_brillouin_zone()[source]
Return an instance of the BrillouinZone class, useful for band structure. :returns: Brillouin Zone of the logfile :rtype:
BigDFT.BZ.BrillouinZone
- SCF_convergence(ax=None)[source]
Plot the wavefunction convergence. :Example:
>>> tt=Logfile('log-with-wfn-optimization.yaml',label='a label') >>> tt.wfn_plot()
- geopt_plot(ax=None)[source]
For a set of logfiles construct the convergence plot if available. Plot the Maximum value of the forces against the difference between the minimum value of the energy and the energy of the iteration. Also an errorbar is given indicating the noise on the forces for a given point. Show the plot as per plt.show() with matplotlib.pyplots as plt
- Example
>>> tt=Logfile('log-with-geometry-optimization.yaml') >>> tt.geopt_plot()
- to_json(outfile)[source]
Convert the logfile stream into a JSON file.
- Parameters
outfile (str) – Path of the JSON output file.
- get_is_linear()[source]
Returns True if this calculation was done in the linear scaling mode.
Todo: there should be a more intentional way to do this.
- Returns
True if linear scaling calculation mode.
- Return type
(logical)
- get_intermediate_energies()[source]
Gathers all the intermediary energy values and puts them in a list.
For the case of mixing, this is the FKS values. For linear scaling, it is the energies computed during kernel optimization.
- Returns
list of intermediary energy values.
- Return type
(list)
- check_convergence()[source]
Check if a calculation has converged.
- Returns
True if converged.
- Return type
(logical)
- check_convergence_cdft(cdft=False, cdft_thresh=0.01)[source]
Check if a calculation has converged when doing CDFT.
- Parameters
cdft (logical) – if CDFT is used a separate check is activated.
cdft_thresh (float) – the threshold for the deviation of Tr(KW)
1.0. (from) –
- Returns
True if converged.
- Return type
(logical)